package com.probox.common.entity.service.customer;

import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.probox.common.entity.vo.CustomerFundVo;
import com.probox.customer.api.domain.CustomerFundDetailVo;
import com.probox.common.entity.domain.customer.CustomerFundDetail;
import com.probox.common.entity.domain.customer.CustomerInfo;
import com.probox.common.entity.vo.customer.open.CustomerFundBillOpenVo;
import com.probox.order.api.domain.OrderQuery;

/**
 * 客户资金明细Service接口
 *
 * @author zsy
 * @date 2021-06-18
 */
public interface ICustomerFundDetailService extends IService<CustomerFundDetail> {


        /**
         * 查询客户资金明细
         *
         * @param detailUid 客户资金明细ID
         * @return 客户资金明细
         */
        public CustomerFundDetail selectCustomerFundDetailById(Long detailUid);


        /**
         * 查询客户资金明细列表
         *
         * @param customerFundDetail 客户资金明细
         * @return 客户资金明细集合
         */
        public List<CustomerFundDetail> queryList(CustomerFundDetail customerFundDetail);

        //查询待确认的列表
        public List<CustomerFundDetail> queryWaitDeductList();

        public List<CustomerFundDetailVo> queryDeductList(CustomerFundDetail customerFundDetail);


        /**
         * 新增客户资金明细
         *
         * @param customerFundDetail 客户资金明细
         * @return 结果
         */
        public boolean insertCustomerFundDetail(CustomerFundDetail customerFundDetail);

        /**
         * 修改客户资金明细
         *
         * @param customerFundDetail 客户资金明细
         * @return 结果
         */
        public boolean updateCustomerFundDetail(CustomerFundDetail customerFundDetail);

        /**
         * 批量删除客户资金明细
         *
         * @param detailUids 需要删除的客户资金明细ID
         * @return 结果
         */
        public boolean deleteCustomerFundDetailByIds(Long[] detailUids);

        public List<CustomerFundDetail> getFundDetail(Long customerId);

        /**
         * 查询客户总收益
         * @param customerUid
         * @return
         */
        public List<CustomerFundDetail> selectCustomerAllProfit(Long customerUid);


        /**
         * 查询客户收益详细
         * @param
         * @return
         */
        public List<CustomerFundDetail> selectMyFundDetail(CustomerFundDetail customerFundDetail);

        public List<CustomerFundDetail> selectDeduct(CustomerFundVo vo);

        public Integer selectDeductCount(CustomerFundVo vo);

        /**
         * 查询客户收益详细总条数
         * @param
         * @return
         */
        public Integer selectMyFundDetailCount(CustomerFundDetail customerFundDetail);

        /**
         * 我的-账单
         * @return
         */
        public List<CustomerFundBillOpenVo> getFundBill();

        /**
         * 总收益详细
         * @param customerFundDetail
         * @return
         */
        public List<CustomerFundDetail> getAllProfitDetail(CustomerFundDetail customerFundDetail);

        /**
         * 总收益详细条数
         * @param customerFundDetail
         * @return
         */
        public Integer getAllProfitDetailCount(CustomerFundDetail customerFundDetail);


        /**
         * 我的-账单总条数
         * @return
         */
        public Integer getFundBillCount();

        /**
         * 查看客户一级粉丝信息
         * @param customerUid
         * @return
         */
        public List<CustomerInfo> getFreeCustomerInfo(Long customerUid,String fansStatus);

        /**
         * 统计订单用户冻结分润资金明细
         * @param orderNo
         * @return
         */
        public List<CustomerFundDetailVo> getOrderFreezeProfit(List<String> orderNo);

        /**
         * 订单下分润冻结的资金明细解冻
         * @param orderNo
         * @return
         */
        public Boolean setValidOrderProfit(List<String> orderNo);

        public Long countJiFen(OrderQuery query);
}
